//
// Created by zhp on 2025/7/17.
//
#include <iostream>

using namespace std;

// 放main 上面
union one4all {
    int a;
    double b;

    // C++ 中的 union 是一种特殊的类类型，
    // 它的所有成员共享同一块内存空间。为了保证效率和简单性，默认情况下
    // C++ 不允许你在 union 里放带有构造函数、析构函数或拷贝控制成员的类类型（如 std::string）。
//     std::string c;

// 可以用字符数组替代，因为string底层也是字符数组，只不过封装了
// 必须指定长度，不能是可变的
    char c[4];
};

int main() {
    size_t one4all_size = sizeof(one4all);
    cout << "one4all_size " << one4all_size << endl;

    one4all one4All{};
    one4All.a = 1;
    cout << "a :" << one4All.a << endl;

    // stored b, a is lost
    one4All.b = 25.0;
    // a这时获取的是b赋值的8byte空间的前4byte，如果b前4byte也有值，a就会有前4byte值
    cout << "a :" << one4All.a << endl;
    cout << "b :" << one4All.b << endl;

}


